package dao;

import java.util.ArrayList;
import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.classic.Session;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;

import to.Cidade;
import to.Estado;
import util.HibernateUtil;

public class CidadeDAO {

	public List<Estado> buscarTodosEstados() {

		List<Estado> retornaEstado = new ArrayList<Estado>();
		Session session = null;

		try {

			session = HibernateUtil.getSessionFactory().openSession();
			Criteria criteria = session.createCriteria(Estado.class, "e");
			criteria.addOrder(Order.asc("e.descricao"));
			retornaEstado = (List<Estado>) criteria.list();

		} catch (Exception e) {
			e.printStackTrace();
		}

		return retornaEstado;

	}

	public List<Cidade> buscarCidadePorEstado(Integer codEstado) {

		List<Cidade> retornaCidade = new ArrayList<Cidade>();
		Session session = null;

		try {

			session = HibernateUtil.getSessionFactory().openSession();
			Criteria criteria = session.createCriteria(Cidade.class, "c");
			criteria.add(Restrictions.eq("c.estado.id", codEstado));
			retornaCidade = (List<Cidade>) criteria.list();

		} catch (Exception e) {
			e.printStackTrace();
		}

		return retornaCidade;

	}

	public Cidade buscarCidadePorCodigo(Integer cod) {

		Cidade cid = new Cidade();
		Session session = null;

		try {

			session = HibernateUtil.getSessionFactory().openSession();
			Criteria criteria = session.createCriteria(Cidade.class, "c");
			criteria.add(Restrictions.eq("c.id", cod));
			cid = (Cidade) criteria.uniqueResult();

		} catch (Exception e) {
			e.printStackTrace();
		}

		return cid;

	}

}
